#课本30页 1.7本章练习

'''第一问：灰度图像的反色运算'''
#data,io都是skimage的子模块(课本P16)
#data：提供一些测试图片和样本数据
#io：读取、保存和显示图片或视频
from skimage import data,io
from matplotlib import pyplot as plt #导入绘图模块
S = data.coffee() #源图像
plt.imshow(S) #进行图片绘制
plt.show() #显示出绘制的源图像

T = 255 - S #反色运算基本公式
io.imshow(T) #显示出反色后的图像
#保存图片
#io.imsave('反色图.jpg',T)

#查看数组的形状，输出结果都为(400,600,3)
#意为图片大小为400*600，包含红、绿、蓝3个颜色通道
#print(S.shape)
#print(T.shape)



'''第二问：幂次运算的对应操作为对数运算，请查阅skimage中
对数运算对应的处理函数，并总结对数运算遵循的规律'''
from skimage import data,io,exposure
from matplotlib import pyplot as plt
#读入图像
image = data.coffee()
#分别计算gamma = 0.2,0.67,25时的图像
image_1 = exposure.adjust_log(image,0.2)
image_2 = exposure.adjust_log(image,0.67)
image_3 = exposure.adjust_log(image,25)
#分别展示原图及结果图像
plt.subplot(2,2,1)
plt.title('log = 1')
io.imshow(image)

plt.subplot(2,2,2)
plt.title('log = 0.2')
io.imshow(image_1)

plt.subplot(2,2,3)
plt.title('log = 0.67')
io.imshow(image_2)

plt.subplot(2,2,4)
plt.title('log = 25')
io.imshow(image_3)
plt.show()

#幂次变换是非线性变换，对图像进行幂次变换，可以让图像中的某些部分凸显  
#对数函数运算公式y=log(1+x)
